iT邦幫忙

2022 iThome 鐵人賽

DAY 15
3
AI & Data

OH~ AI 原來如此,互助就此開始!系列 第 15

Day 14. 深度學習模型 - 學習的改善

  • 分享至 

  • xImage
  •  

介紹完梯度下降的改善,就來看學習完成後的模型有哪些方法可以做改善,來達到我們想要的準確度。

過度擬合(Overfitting)和欠擬合(Underfitting)

一開始說過我們最終是要將未知資料拿來做模型的驗證,所以即便已知資料的訓練集效果很好,未知資料的測試集效果很差也沒有意義。這種學習過頭也就是訓練時的誤差(Train Error)小,但是測試時的誤差(Test Error)大,只對訓練集預測很好的情形我們之前提過叫做過度擬合。但是學習不給力,連訓練誤差都很大,叫做欠擬合

日文把過度擬合和欠擬合叫做過學習和未學習,我覺得也蠻貼切的。

欠擬合 理想學習 過度擬合
https://ithelp.ithome.com.tw/upload/images/20220905/20150622m5Ip5Peb6H.png https://ithelp.ithome.com.tw/upload/images/20220827/201506220U4AURVJ8y.png https://ithelp.ithome.com.tw/upload/images/20220827/20150622X6acco0AfR.png
  • 欠擬合(Underfitting)
    訓練誤差和測試誤差都大。

  • 理想學習
    訓練誤差和測試誤差都小。

  • 過度擬合(Overfitting)
    訓練誤差小,測試誤差大

高維度我們無法直接看到訓練的狀況,可以透過下面的圖用訓練誤差和測試誤差來判斷是過度擬合還是欠擬合。

https://ithelp.ithome.com.tw/upload/images/20220912/20150622Gqaw0MaU4h.jpg

正則化(Regularization)

為了防止過度擬合,有一些手法可以使用,其中一種限制學習過程中權重的作用,防止學習結果被權重過大的訓練資料所淹沒。叫做正則化

正則化通常是針對損失函數的 w(權重) 增加懲罰項(Penalty), 有以下幾種:

  • L1 正則化
    將一部分參數的值設成0來達到減少特徵的目的。
    以線性回歸來說就是 Lasso 回歸
  • L2 正則化
    將參數的值設成接近0來避免受到太強權重的影響。
    以線性回歸來說就是 Ridge 回歸
  • Elastic Net
    組合 L1 和 L2 正則化。

丟棄(Dropout)

Dropout 是每次 epoch 時隨機丟棄一部分感知器的方法。由於每次學習都是不同構成的神經網路,和集成學習有異曲同工之妙。某種程度上也被當成正則化的一種。

提前停止(Early Stopping)

避免過度擬合還有一個手法就是提前停止
也就是在學習的過程中,當測試誤差開始向右上升時停止學習。
由於每個演算法都可以使用這個手法也沒有什麼成本,相對於沒有免費的午餐定理,
Jeffrey Hilton 教授稱這種技術為美麗的免費午餐。(Early stopping (is) beautiful free lunch)

必須注意提前停止的時機,有時候即便是誤差上升,之後會再度發生下降的現象,這種雙重下降現象(double descent phenomenon)導致如果太早停止學習反而會錯過更好的學習成果。像是後面會介紹的 CNN,ResNet,Transformer 等都會發生,通常會使用正則化來避免。

資料前處理

分析不同資料時,特徵有的數值大,有的數值小,單位也彼此不同,比如身高(cm)和體重(kg)。為了排除這些數值上極大的落差,在訓練之前會使用正規化或標準化將數值收斂在一定範圍,所以叫資料前處理。有兩個好處:

  1. 加速學習
    可以減少梯度下降的學習時間。

  2. 提高精準度
    由於數值落差造成的影響,會導致一些演算法的結果失真,標準化後可以使得特徵做出較一致的貢獻。

正規化(Normalization )

調整輸入資料將每個特徵值照比例轉換為 0 到 1 範圍

  • 使用時機
    針對尺度(Scale)比較大的特徵想加速學習。
正規化前(X:0~30,Y:0~40) 正規化後(X:0~1,Y:0~1)
https://ithelp.ithome.com.tw/upload/images/20220912/20150622MoyTx4h9ot.png https://ithelp.ithome.com.tw/upload/images/20220929/20150622jm0NVeuO8O.png

批量正規化(Batch normalization)

每一層的資料在使用激勵函數之前進行正規化的方法稱為批量正規化。
可以抑制過度擬合

標準化(Standardization)

將特徵轉換成平均(mean)為0,方差(又叫變異數,variance)為1,使其遵循常態分佈

有的書會寫方差為1或標準差為1,都沒有錯,因為標準差的平方就是方差,1的平方還是1。

  • 使用時機
    演算法會使用特徵之間的距離及離散程度。如 KNN,SVM。
標準化前(X:0~30,Y:0~40) 標準化後(平均0,方差1)
https://ithelp.ithome.com.tw/upload/images/20220912/20150622sGFk7E6MLv.png https://ithelp.ithome.com.tw/upload/images/20220929/20150622lYbumklD7w.png

白化(Whitening transformation)

類似主成分分析,針對特徵做去相關性後做標準化

  • 使用時機
    通常用於圖像,比如說相鄰像素有很強的相關性,所以會先壓縮減少特徵數再作標準化。
白化前(正相關) 去相關性後 標準化後
https://ithelp.ithome.com.tw/upload/images/20220913/20150622IiZlomvZk6.png https://ithelp.ithome.com.tw/upload/images/20220913/20150622tg6t1QplUx.png https://ithelp.ithome.com.tw/upload/images/20220913/20150622jctSNSnD0x.png

獨熱編碼(One-hot Encoding)

由於機器學習只能接受數值資料,像地名或產品名就不適用於數值,會改用 One-hot Encoding。簡單說就是有 n 個類別, m 筆資料就會有一個 n × m 的表格,屬於哪個類別,那個類別欄為 1,其他類別欄為 0。

只能有一個 1 其他為 0 稱為獨熱(One-hot)。

原始資料:

國籍 年紀 收入
France 42 100000
Japan 36 80000
Taiwan 31 70000

One-hot Encoding:

France Japan Taiwan 年紀 收入
1 0 0 42 100000
0 1 0 36 80000
0 0 1 31 70000

One-hot Encoding 目前在 Kaggle 競賽中常被其他替代方案取代,原因是因為 one-hot encoding 會導致特徵數變多,以及資料中出現非常多個0。

過度擬合和欠擬合的對策整理

過度擬合對策

  • 使用正則化來減少模型複雜度
  • 使用丟棄
    和正則化一樣算是最通用的方法。
  • 使用早期停止
  • 使用批次正規化
  • 使用集成學習(隨機森林)
  • 調整超參數
  • 減少特徵數(降維)
  • 增加更多資料

欠擬合對策

  • 減少正則化
  • 增加特徵數
  • 增加模型複雜度

補充資料

立即複習

  1. 過度擬合是指什麼誤差小,什麼誤差大?
  2. 過度擬合時做的正則化,主要是限制什麼的影響?
  3. 提前停止是指什麼誤差開始上升時提前停止學習?
  4. 丟棄是指每回 epoch 時隨機丟棄什麼東西?
  5. 什麼是正規化和標準化?
  6. 批次正規化主要是每一層在做什麼之前作正規化?效果是什麼?
  7. One-hot encoding的缺點是資料出現很多個0以及什麼變多?
  8. 美麗的免費午餐指的是哪個技巧?
  9. 列舉 3 個過度擬合的對策。

上一篇
Day 13. 深度學習模型 - 梯度下降改善
下一篇
Day 15. 深度學習模型 - CNN(一)
系列文
OH~ AI 原來如此,互助就此開始!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言